package world.xuewei.service;

import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import world.xuewei.model.entity.Commodity;

import java.util.List;
import java.util.Map;

/**
 * 商品表(Commodity)表服务接口
 *
 * @author makejava
 * @since 2024-11-16 15:40:06
 */
public interface CommodityService {

    //获取所有商品
    List<Commodity> getallcommodity();

    // 热门商品
    List<Commodity> getTopSalesCommodities();


    //商家添加新的商品
    boolean addProduct(Commodity commodity) throws Exception  ;

    //根据商品id获取商品信息
    List<Map<String, Object>> getSpecifications(Long commodityId);
    // 修改商品信息
    boolean updateProductInformation(Commodity commodity) throws Exception;

    /**
     * 增加商品库存
     * @param id 商品ID
     * @param quantity 增加数量
     * @return 是否成功
     */
    boolean addInventory(Long id, Integer quantity);


    /**
     * 商品下架
     * @param id 商品ID
     * @return 是否成功
     */
    boolean offline(Long id);

    /**
     * 商品上架
     * @param id 商品ID
     * @return 是否成功
     */
    boolean online(Long id);


    /**
     * 收藏/取消收藏
     */
    boolean addFavorite(Long userId, Long commodityId);


    /**
     * 查询用户收藏的商品列表
     */
    List<Commodity> queryFavorites(Long userId);








    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    Commodity queryById(Long id);

    /**
     * 分页查询
     *
     * @param commodity   筛选条件
     * @param pageRequest 分页对象
     * @return 查询结果
     */
    Page<Commodity> queryByPage(Commodity commodity, PageRequest pageRequest);

    /**
     * 新增数据
     *
     * @param commodity 实例对象
     * @return 实例对象
     */
    Commodity insert(Commodity commodity);

    /**
     * 修改数据
     *
     * @param commodity 实例对象
     * @return 实例对象
     */
    Commodity update(Commodity commodity);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Long id);

}
